/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package multiface.web.util;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

public class CreateThumbnail {

    public static final int VERTICAL = 0;
    public static final int HORIZONTAL = 1;
    public static final String IMAGE_JPEG = "jpeg";
    public static final String IMAGE_JPG = "jpg";
    public static final String IMAGE_PNG = "png";
    private ImageIcon image;
    private ImageIcon thumb;

    public CreateThumbnail(byte[] image) {
        this.image = new ImageIcon(image);
    }

    public CreateThumbnail(Image image) {
        this.image = new ImageIcon(image);
    }

    public CreateThumbnail(String fileName) {
        image = new ImageIcon(fileName);
    }

    public Image getThumbnail(int size, int dir) {
        if (dir == HORIZONTAL) {
            thumb = new ImageIcon(
                    image.getImage().getScaledInstance(
                    size, -1, Image.SCALE_SMOOTH));
        } else {
            thumb = new ImageIcon(
                    image.getImage().getScaledInstance(
                    -1, size, Image.SCALE_SMOOTH));
        }
        return thumb.getImage();
    }

    public Image getThumbnail(int size, int dir, int scale) {
        if (dir == HORIZONTAL) {
            thumb = new ImageIcon(
                    image.getImage().getScaledInstance(size, -1, scale));
        } else {
            thumb = new ImageIcon(
                    image.getImage().getScaledInstance(-1, size, scale));
        }
        return thumb.getImage();
    }

    public Image getThumbnail(int size) {
        thumb = new ImageIcon(image.getImage().getScaledInstance(size, size, Image.SCALE_SMOOTH));
        return thumb.getImage();
    }

    public Image getThumbnailProporzional_With(int with) {
        int h = this.image.getIconHeight();
        int l = this.image.getIconWidth();

        int x = (int) (h * with) / l;

        thumb = new ImageIcon(image.getImage().getScaledInstance(with, x, Image.SCALE_SMOOTH));
        return thumb.getImage();
    }

    public void saveThumbnail(File file, String imageType) {
        if (thumb != null) {
            BufferedImage bi = new BufferedImage(
                    thumb.getIconWidth(),
                    thumb.getIconHeight(),
                    BufferedImage.TYPE_INT_RGB);
            Graphics g = bi.getGraphics();
            g.drawImage(thumb.getImage(), 0, 0, null);
            try {
                ImageIO.write(bi, imageType, file);
            } catch (IOException ioe) {
                ////Sy_stem.out.println("Error occured saving thumbnail");
            }
        } else {
            ////Sy_stem.out.println("Thumbnail has not yet been created");
        }
    }

    /*
    public static void main(String [] args)
    {
    CreateThumbnail ct = new CreateThumbnail("image.jpg");
    ct.getThumbnail(100, CreateThumbnail.HORIZONTAL);
    ct.saveThumbnail(new File("thumb.jpg"), CreateThumbnail.IMAGE_JPEG);
    }*/
}